1. Background ( Content-Length / Transfer-Encoding: chunked )1.1 Content-Length1.2 Transfer-Encoding: chunked1.3 μ·¨μ½μ  λ±μ₯ λ°°κ²½2. HTTP Smuggling (HTTP 1.1)2.1 CL-TE2.2 TE-CL3.3 TE.TE2.4 CL.03. HTTP Smuggling (HTTP/2)3.1 HTTP/1.1 vs 23.2 downgrades HTTP/2 requests4. Smuggling μμ4.1 /admin κ²½λ‘ μ κ·Ό λ°©μ§ μ°ν4.2 λ―Έλ€μ¨μ΄βμλμλ² μ λ³΄ μ μΆ / μ¬μ©μ μμ² LeakReference
Β 
1. Background ( Content-Length / Transfer-Encoding: chunked )
1.1 Content-Length
κ°λ 
Content-Length ν€λλ HTTP μλ΅ λλ μμ²μ λ³Έλ¬Έ κΈΈμ΄λ₯Ό λ°μ΄νΈ λ¨μλ‘ λνλ
λλ€. ν΄λΌμ΄μΈνΈμ μλ²λ μ΄ κ°μ ν΅ν΄ λ°μ΄ν°λ₯Ό μ μ‘ν  λ μ΄λκΉμ§ μ½μ΄μΌ νλμ§ μ μ μμ΅λλ€.λ³΄ν΅ 
μ μ‘ν  λ°μ΄ν°μ μ μ²΄ ν¬κΈ°λ₯Ό 미리 μκ³  μμ λ μ¬μ©λ©λλ€. ν€λμ μ΄ κ°μ΄ ν¬ν¨λλ©΄, ν΄λΌμ΄μΈνΈλ λ³Έλ¬Έ λ°μ΄ν°λ₯Ό μ νν κ·Έ κΈΈμ΄λ§νΌ μ½μ΅λλ€.Β 
Β 
μ¬μ©
- μ μ  μ½ν μΈ μ μ‘: HTML νμΌ, μ΄λ―Έμ§, λΉλμ€ λ±μ μ μ  νμΌμ μ μ‘ν λ μ£Όλ‘ μ¬μ©λ©λλ€. μ΄λ¬ν νμΌμ ν¬κΈ°λ μ μ‘ μ μ 미리 μ μ μμΌλ―λ‘- Content-Lengthλ₯Ό μ¬μ©ν΄ νμΌ ν¬κΈ°λ₯Ό λͺ μν μ μμ΅λλ€.
- λ¨μΌ μμ²/μλ΅ λ°μ΄ν°: μμ²μ΄λ μλ΅μ λ°μ΄ν° ν¬κΈ°κ° κ³ μ μ μ΄κ³ 미리 μ μ μλ κ²½μ°μ μ¬μ©λ©λλ€. μλ₯Ό λ€μ΄, μ μ  μΉ νμ΄μ§λ₯Ό μ 곡νλ κ²½μ°μ μ ν©ν©λλ€.
Β 
Β 
μμ
μλ₯Ό λ€μ΄ abcdef λΌλ λ¬Έμμ΄μ 보λΌλμλ 
byteκ° 6μ΄κΈ° λλ¬Έμ λ€μκ³Ό κ°μ΄ μ μ‘λ©λλ€. Β 
Β 
Β 
Β 
Β 
Β 
1.2 Transfer-Encoding: chunked
κ°λ 
Transfer-Encoding: chunkedλ HTTP/1.1μμ λμ
λ λ©μ»€λμ¦μΌλ‘, λ°μ΄ν°κ° μΌμ ν ν¬κΈ°μ μ²ν¬(chunk)λ‘ λλμ΄ μ μ‘λ©λλ€. κ° μ²ν¬λ μ체μ μΌλ‘ ν¬κΈ°λ₯Ό κ°μ§κ³  μμΌλ©°, ν΄λΌμ΄μΈνΈλ κ° μ²ν¬μ κΈΈμ΄λ₯Ό μ½μ λ€μ ν΄λΉ μ²ν¬ λ°μ΄ν°λ₯Ό μ½μ΅λλ€.chunked μ μ‘ μΈμ½λ©μ λ°μ΄ν°μ μ΄ ν¬κΈ°λ₯Ό 미리 μ μ μλ κ²½μ°μ μ μ©ν©λλ€. κ° μ²ν¬μ λμ 
0 ν¬κΈ°μ μ²ν¬λ‘ νμλμ΄ λ°μ΄ν°μ λμ μ립λλ€.Β 
Β 
μ¬μ© μν©
- λμ  μ½ν μΈ μ μ‘: λ°μ΄ν°μ ν¬κΈ°λ₯Ό 미리 μ μ μλ κ²½μ°, μλ₯Ό λ€μ΄, μ€μκ°μΌλ‘ μμ±λλ λ°μ΄ν°λ μ€νΈλ¦¬λ° μ½ν μΈ λ₯Ό μ μ‘ν λ μ¬μ©λ©λλ€.
- λ°μ΄ν° μμ± μκ°μ΄ κΈ΄ κ²½μ°: μλ²κ° λ°μ΄ν° μμ±μ μκ°μ΄ 걸리λ κ²½μ°μλ μ μ©ν©λλ€. μλ₯Ό λ€μ΄, λν λ³΄κ³ μ μμ±κ³Ό κ°μ μμ μ΄ λλ λκΉμ§ κΈ°λ€λ¦¬μ§ μκ³ , λΆλΆμ μΌλ‘ μμ±λ λ°μ΄ν°λ₯Ό λ°λ‘ μ μ‘ν μ μμ΅λλ€.
Β 
Β 
μμ
- μ¬κΈ°μ μ€μν μ μ λ°μ΄ν° μ μ‘ μ’ λ£ λΆλΆμμ 0\r\n\r\nμ 보λΈλ€λ κ² μ λλ€.
Β 
Β 
Β 
Β 
Β 
Β 
1.3 μ·¨μ½μ  λ±μ₯ λ°°κ²½
μ΅κ·Όμλ νλ‘ νΈ/λ°±μλ μλ²λ‘ λλμ΄μ νκ²½μ ꡬμΆνκ±°λ, λμ©λ νΈλν½μ μ²λ¦¬νλ κ²½μ° λ‘λ λ°Έλ°μ±μ ν΅ν΄ νΈλν½μ λΆμ°νλ λ± λ€μν μλ² κ΅¬μΆ νκ²½μ΄ μ‘΄μ¬ν©λλ€. μ΄λ νΈλν½μ μ²λ¦¬νλ κ³Όμ μμ 
λ―Έλ€μ¨μ΄μ μλμλ²μ λ°μ΄ν° μ μ‘μ λ°μλ€μ΄λ λ°©μμ΄ λ€λ₯΄λ©΄ Smuggling μ·¨μ½μ μ΄ λ°μν©λλ€.
Β 
Β 
Β 
μμνκΈ° μ 
ν΄λΉ κΈμ μμνκΈ° μ μ μ©μ΄κ° ν·κ°λ¦΄ μ μμ΄ μ λ¦¬νκ² μ΅λλ€.
λ―Έλ€μ¨μ΄ == 리λ²μ€ νλ‘μ, νλ‘ νΈμλ μλ² λ±λ± μ€κ°μ§μ μλμλ² == λ°±μλ μλ²Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
2. HTTP Smuggling (HTTP 1.1)
HTTP Smugglingμμ Smugglingμ 
λ°μ λΌλ λ»μ κ°μ§κ³  μμ΅λλ€. λ―Έλ€μ¨μ΄μ μλμλ²μμ λ°μ΄ν° μ μ‘ λ°©μμ λ€λ₯΄κ² λ°μλ€μΌ κ²½μ° λ°μνλ μ·¨μ½μ  μΌλ‘ λ€μκ³Ό κ°μ νμμΌλ‘ ννν©λλ€. κ²°κ³Όμ μΌλ‘ μλμλ² μμΌμμ λ°μ λ λ°μ΄ν°κ° λ¨μ λ λ²μ§Έ ν¨ν·κ³Ό κ²°ν©νμ¬ λ°μνλ μ·¨μ½μ  μ
λλ€.Β 
Smuggling μ ν
μ¬κΈ°μ 
CLμ Content-Lengthμ΄κ³  TEλ Transfer-Encoding μ
λλ€. CLκ³Ό TEμ μμκ° μ€μνλ©°, ν΄λΉ μ νμ κΈ°μ΄λ‘ νμ¬ λ€μν λ°©λ²μ ν΅ν Smugglingμ ν  μ μμ΅λλ€. - CL-CL
- CL-TE
- TE-CL
- TE-TE
- CL.0
Β 
CL-CLμ λ³΄ν΅ 400 μν μ½λλ₯Ό μλ΅ν¨μΌλ‘, ν΄λΉ 곡격μ μ μΈνκ³  μμ νκ² μ΅λλ€. ( μ½λ€ 보면 CL-CLλ μμ°μ€λ½κ² μκ² λμλλ€. )
Β 
Β 
Β 
Β 
2.1 CL-TE
λ―Έλ€μ¨μ΄κ° CL(Content-Length)μ, μλμλ²κ° TE(Transfer-Encoding) ν€λ νμμΌλ‘ λ°μ΄ν° μ μ‘μ μ§μν  λ μ·¨μ½μ μ΄ λ°μν©λλ€. Β 
μμλ‘ μ΄λ€ μ¬μ΄νΈμ 
CL-TE 곡격μ μνν΄ λ³΄κ² μ΅λλ€. Content-Lengthλ₯Ό μ§μνλ λ―Έλ€μ¨μ΄μ Content-Lengthμ Transfer-Encodingν€λλ₯Ό λ λ€ μμ±ν©λλ€.
- νλ‘ νΈμλλ CLμ μ§μνκΈ° λλ¬Έμ POSTλ°μ΄ν° κΈΈμ΄μΈ 35λ§νΌ λ°μ΄ν°λ₯Ό λ°μλ€μ λλ€.
- νμ§λ§ Transfer-Encodingμ μ§μνλ μλ μλ²λ μ΄λ¨κΉμ?
Β 
Β 
λ€μκ³Ό κ°μ΄ λ μλ²κ° 
νκ°μ μμ²μ λ€λ₯Έ ν΄μμ μνν©λλ€. CLμ λ―Έλ€μ¨μ΄(리λ²μ€ νλ‘μ, νΉμ μ  1μλ²)κ° ν΄μν  λ²μμ΄κ³ , TEλ μλμλ²(λ°±μλ μλ²)κ° ν΄μν  λ²μμ
λλ€.
- μλμλ²λ 0\r\n\r\nμ λ§μ§λ§μΌλ‘ ν¨ν·μ΄ μ’ λ£λμλ€κ³ νλ¨ν©λλ€.
- μ΄λ κ² λλ©΄ 0\r\n\r\nμ΄νμ λ°μ΄ν°λ μ’ λ£λμ§ μμμλμλ²μ μμΌμ λ°μ΄ν°λ‘ λ¨κ² λ©λλ€.
Β 
Β 
π 첫 λ²μ§Έ μμ² λμν

- ν΄λΌμ΄μΈνΈ(곡격μ)λ Smuggling νμ΄λ‘λκ° λ΄κΈ΄ ν¨ν·μ λ―Έλ€μ¨μ΄μ μ λ¬ν©λλ€.
- 리λ²μ€ νλ‘μλ ν¨ν·μ μ΄μμ΄ μκΈ° λλ¬Έμ λ°±μλ μλ²λ‘ μ λ¬ν©λλ€.
- μλ²λ Transfer-Encoding ν€λνμμ λ°λΌ0\r\n\r\nκΉμ§λ§ ν¨ν·μ λ°μ μ²λ¦¬ν©λλ€.
- μ²λ¦¬λμ§ μμ smuggling νμ΄λ‘λλ μλ μλ² μμΌμ λ¨μμκ² λ©λλ€.
Β 
Β 
κ·ΈλΌ λ λ²μ§Έ μμ²μλ μ΄λ€ μλ΅μ΄ λ΄κ²¨μ¬κΉμ?
λ λ²μ§Έ ν¨ν·μ
λλ€.

- smuggling κ³΅κ²©μ΄ μ±κ³΅νμ¬ 404 Errorμ λ°νν©λλ€.
Β 
Β 
π λ λ²μ§Έ μμ² λμν

- ν΄λΌμ΄μΈνΈ(곡격μ)μ μμ² ν¨ν·μ΄ λ―Έλ€μ¨μ΄λ₯Ό κ±°μ³ λ°±μλ μλ²κΉμ§ λλ¬ν©λλ€.
- λ°±μλ μλ²μμλ μ²λ¦¬λμ§ λͺ»ν smuggling νμ΄λ‘λ+λ λ²μ§Έ μμ² ν¨ν·μ΄ κ²°ν©λκ³ , μλ²μμλ κ²°ν©λ ν¨ν·μ μ²λ¦¬νμ¬ μλ΅ν©λλ€.
- κ²°ν©λ ν¨ν·μ μλ²κ° ν΄μνκΈ°μ  /404κ²½λ‘λ‘ μμ²νλ κ²μ λν μλ΅μ μνν©λλ€. (μλ μΉμ¬μ΄νΈμ μμ²νκΈ° λλ¬ΈμNot Foundλ°μ΄ν°κ° μλ΅λ©λλ€.)
Β 
Β 
κ·ΈλΌ μ΄λ€ μν₯μ λΌμΉ  μ μμκΉμ?
- 곡격μκ° μμ²μ λ λ² μννμ¬ μ κ·Όν μ μλ κ²½λ‘λ‘ μ κ·Όνκ±°λ
- 곡격 μ΄ν μμ²λ ν΄λΌμ΄μΈνΈμ μμ²μ μ€μΌμν¬ μ μμ΅λλ€.
Β 
Β 
Β 
Β 
Β 
2.2 TE-CL
μλμλ²κ° CL(Content-Length)μ, λ―Έλ€μ¨μ΄κ° TE(Transfer-Encoding) ν€λ νμμΌλ‘ λ°μ΄ν° μ μ‘μ μ§μν  λ μ·¨μ½μ μ΄ λ°μν©λλ€. Β 
μμλ‘ μ΄λ€ μ¬μ΄νΈμ 
TE-CL 곡격μ μνν΄ λ³΄κ² μ΅λλ€.
- 0μ΄μ κΉμ§μ κΈΈμ΄λ₯Ό μΈ‘μ ν©λλ€. (5e)
- λ²νλ₯Ό μ°λ κ²½μ° 0 μ΄μ κΉμ§μ λ°μ΄ν°λ₯Ό λλκ·Έλ‘ κΈμΌλ©΄ μμ hexκ°μ΄ λνλ©λλ€.
- 5eλ κΈΈμ΄μ hexκ° μ λλ€.
Β 
Β 
λ€μκ³Ό κ°μ΄ λ μλ²κ° 
νκ°μ μμ²μ λ€λ₯Έ ν΄μμ μνν©λλ€. TEλ λ―Έλ€μ¨μ΄(리λ²μ€ νλ‘μ, νΉμ μ  1μλ²)κ° ν΄μν  λ²μμ΄κ³ , CLλ μλμλ²(λ°±μλ μλ²)κ° ν΄μν  λ²μμ
λλ€.
- μ²μ νλ‘μ(TE)λ  0\r\n\r\nμ΄μ κΉμ§μ λ°μ΄ν°λ₯Ό μ λΆbodyκ°μΌλ‘ λ³΄κ³ λ°±μ€λ μλ²(CL)λ‘ λκΈ°κ² λ©λλ€.
- CLμ Content-Lengthκ° 4 μμΌλ‘, 5eλ₯Ό μ μΈν λ°μ΄ν°λ μ½μ§ μμ΅λλ€.
- μ΄λ κ² λ¨μ λ°μ΄ν°λ μλ²μ μμΌμ μμ¬ λ°μ΄ν°λ‘ λ¨κ² λ©λλ€.
Β 
Β 
μ Content-Lengthκ° 4λ‘ μΈ‘μ λλμ? β (λ°μ΄νΈ)
- 5
- e
- \r
- \n
Β 
π 첫 λ²μ§Έ μμ² λμν

- ν΄λΌμ΄μΈνΈ(곡격μ)λ λ―Έλ€μ¨μ΄(νλ‘μ)μκ² Smuggling νμ΄λ‘λκ° λ΄κΈ΄ POST μμ²μ 보λ λλ€.
- λ―Έλ€μ¨μ΄λ TEλ‘ νλ¨νκ³ μ μ ν¨ν·μΌλ‘ κ°μ£Ό, λ°±μλ μλ²λ‘ μ μ‘ν©λλ€.
- λ°±μλ μλ²λ CLλ‘ νλ¨νκ³  TE νμμμ λ°μ΄ν°μ κΈΈμ΄λ₯Ό λνλ΄λ 5EκΉμ§λ§ Bodyλ‘ νλ¨ν©λλ€.
- μ΄λ κ² 5Eλ€μ μλSmuggling ν¨ν·μ μμ¬ λ°μ΄ν°λ‘ μμΌμ λ¨μμκ² λ©λλ€.
Β 
Β 
λ λ²μ§Έ ν¨ν·μ
λλ€.
CL-TEμ λ§μ°¬κ°μ§λ‘, μμΌμ λ¨μμλ λ°μ΄ν°μ λ λ²μ§Έ ν¨ν·μ΄ ν©μ³μ Έ /404νμ΄μ§λ‘ μμ²ν κ²μ λν μλ΅μ΄ μ€κ² λ©λλ€.
Β 
Β 
π λ λ²μ§Έ μμ² λμν

- ν΄λΌμ΄μΈνΈκ° λ λ²μ§Έ ν¨ν· μ μ‘
- λ―Έλ€μ¨μ΄ β μλ μλ² ν¨ν· μ μ‘
- μλμλ² μμΌμ λ¨μμλ μμ¬ λ°μ΄ν° + λλ²μ§Έ ν¨ν·μ΄ κ²°ν©ν΄μ- 곡격μκ° μλν μμ² μμ±(/404)
- μλ²λ ν΄λΌμ΄μΈνΈμκ² /404κ²½λ‘λ‘ μμ²ν κ²μ λν μλ΅μ λ°νλ©λλ€.
Β 
Β 
Β 
Β 
Β 
Β 
3.3 TE.TE
κ°μ Body μ²λ¦¬ λ°©μ(Transfer-Encoding)μ μ¬μ©ν΄λ μ·¨μ½μ μ΄ λ°μνκΈ°λ ν©λλ€. 
Transfer-Encoding ν€λλ₯Ό λ€μν λ°©μμΌλ‘ λλ
ν νΉμ μ‘°μνμ¬, λ―Έλ€μ¨μ΄ νΉμ μλμλ² λμ€ νλκ° μ²λ¦¬λ₯Ό νμ§ μκ² νλ©΄λ©λλ€.Β 
π μμλ‘ λ€μκ³Ό κ°μ ν¨ν·μ μ λ¬ν΄ 보겠μ΅λλ€.
Β 
Β 
νλ‘ νΈμλ μλ²λ 
Transfer-Encoding: wtfλ₯Ό 보고 μ¬λ°λ₯΄μ§ μλ€κ³  μκ°νμ¬ Content-LengthμΌλ‘ ν΄λΉ Body λ°μ΄ν°λ₯Ό νμ±ν©λλ€. μ΄λ κ² λλ©΄ CL.TE μ·¨μ½μ μ΄ λ°μνκ² λ©λλ€.λ€λ₯Έ μ μ, λ―Έλ€μ¨μ΄μ μλμλ²κ° CLκ³Ό TEλ₯Ό λͺ¨λ νμ± νμ§λ§, 
νλ‘ νΈμλμμλ Transfer-Encoding: wtfλ₯Ό μ΄μνλ€κ³  νλ¨νμ¬ Content-Length λ‘ νμ±ν κ² μ
λλ€.
Β 
Β 
Content-Lengthλ₯Ό μ μμ μΌλ‘ μ£Όμμ λλ λ¬Έμ  μμ΄ λμν©λλ€.

Β 
Β 
μ΄λ° μμΌλ‘ TEλ₯Ό λλ
ννμ¬ μλ² μ€ νλκ° ν€λλ₯Ό μ²λ¦¬νμ§ μλλ‘ ν  μ μμ΅λλ€. λ κ°μ μλ² μ€ ν κ°μ μλ²λ§ TE ν€λλ₯Ό μ²λ¦¬νμ§ μκ² λλ©΄ λλ¨Έμ§ κ³Όμ μ κΈ°μ‘΄μ CL.TE, TE.CL μ·¨μ½μ κ³Ό κ°μ΅λλ€.
Β 
π€ͺ λλ
ν μ’
λ₯
Β 
Β 
Β 
Β 
Β 
2.4 CL.0
CL.0μ 
λ―Έλ€μ¨μ΄μμλ CLμ μ²λ¦¬νμ§λ§ μλμλ²μμλ CLμ μ²λ¦¬νμ§ μμ κ²½μ° λ°μνλ μ·¨μ½μ  μ
λλ€.λμΌ TCP Connectionμμ λ°μνκΈ° λλ¬Έμ ν€λμ 
Connection: keep-aliveκ° μμ΄μΌ ν©λλ€. (νΉμ λ²ν μ€μ μ λ§μ§λ€ 보면 μλμΌλ‘ μμ² μ λΆμ¬μ£Όλ κ² κ°κΈ°λ ν©λλ€.)Β 
μμλ‘ λ―Έλ€μ¨μ΄ μμλ 
Content-Length: 30μ ν΄μνκΈ° λλ¬Έμ λ¬Έμ  μμ΄ μλν©λλ€.
- νμ§λ§ ν΄λΉ μμ²μ μλμλ²μμ Content-Lengthκ° νμ±λμ§ μμ΅λλ€. (κ·Έλμ CL.0) μ΄λΌκ³ ν©λλ€.
- (ν΄λΉ λ¬Έμ μμλ λ°±μλμλ²κ° /resourcesκ²½λ‘λ μμμ νμνκΈ°μ, Body λ°μ΄ν°λ₯Ό νμ±νμ§ μμ λ°μνλ€κ³ μκ°λ©λλ€.)
- μ΄λ κ² 무μλ λ λ²μ§Έ ν¨ν·μλ€μλ² μμ²μ Smuggling λ©λλ€.
Β 
Β 
λ λ²μ§Έ μΌλ° ν¨ν·μ
λλ€. μμλλ‘ 
/κ²½λ‘μ μμ²μ νμμ§λ§ Smugglingλ ν¨ν·μ μμ²μΌλ‘ μ΄λν©λλ€.
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
3. HTTP Smuggling (HTTP/2)
3.1 HTTP/1.1 vs 2
Smugglingμ νλ κ΄μ μμ HTTP λ²μ μ μ€μν μ°¨μ΄λ₯Ό 보μ
λλ€.
μμλ‘ HTTP/1.1μμ ν€λ μ μ‘ λ°©μμ ν
μ€νΈ κΈ°λ°μΌλ‘ μ μ‘λλ©°, 
\r\nμΌλ‘ ꡬλΆλ©λλ€. νμ§λ§ HTTP2λ λ°μ΄λ리 νλ μμΌλ‘ μ μ‘λκΈ° λλ¬Έμ κ°νμ μ¬μ©ν  νμλ μκ³ , νλ μ λ¨μλ‘ μ μ‘λκΈ° λλ¬Έμ Content-Lengthλν μ¬μ©λμ§ μμ΅λλ€.Β 
νν λ°©μ λν λ€λ¦
λλ€. μμλ‘ κ°μ μΉ μμ² ν¨ν·μ λ²μ μ λ°λΌ λ€λ₯΄κ² νννλ©΄ λ€μκ³Ό κ°μ΅λλ€.
Β 
π HTTP/1.1
Β 
π HTTP/2
- μ€μ λ‘ μ½λ‘ μΌλ‘ ννλμ§ μμΌλ©°, λ°μ΄λ리 λ°μ΄ν°λ‘ μΈμ½λ©λμ΄ μ μ‘λ©λλ€.
Β 
Β 
Β 
Β 
Β 
Β 
3.2 downgrades HTTP/2 requests
HTTP/2 νκ²½μμλ κΈ°μ‘΄μ μ‘΄μ¬νλ Smuggling곡격μ μ¬μ©ν  μ μμ΅λλ€. 
λμ  ν΄λΌμ΄μΈνΈμ λ―Έλ€μ¨μ΄κ° http/2 ν΅μ μ μννκ³ , λ―Έλ€μ¨μ΄μ μλμλ²κ° HTTP/1.1 ν΅μ μ μννλ€λ©΄, μ·¨μ½μ μ νΈλ¦¬κ±° ν  μ μμ΅λλ€.Β 
H2.CL
β‘οΈ 
νλ‘ νΈμλ β λ―Έλ€μ¨μ΄ : HTTP/2 μ¬μ©β‘οΈ 
λ―Έλ€μ¨μ΄ β μλμλ² : HTTP/1.1 μ¬μ©- μλμλ²μμλ Content-Lengthκ° 0μ΄λΌκ³ μκ°ν¨μΌλ‘μ¨ μ΄νμ μ€λ ν¨ν·μ μμΌμ λ°μ΄ν°κ° λ¨κ² λ©λλ€.
- λ λ²μ§Έ μμ²λΆν°λ νΌν΄μμ μμ²μ΄ Smugglingλ ν¨ν· λ€λ‘ λΆμ΄ κ³΅κ²©μ΄ μ€νλ©λλ€.
Β 
π― μμ

Β 
Β 
Β 
H2.TE
HE.CLκ³Ό λμΌν λ°©μμ
λλ€.- HTTP/2μμλ Transfer-Encodingμ μ²λ¦¬νμ§ μμμΌλ‘, ν΄λΉ- ν¨ν·μ΄ κ·Έλλ‘ μλ μλ²λ‘ λμ΄κ°κ² λκ³ μ΄λ μλ μλ²κ° TEλ₯Ό μ²λ¦¬νλ©°Smugglingμ΄ λ°μνκ² λ©λλ€.
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
4. Smuggling μμ
4.1 /admin κ²½λ‘ μ κ·Ό λ°©μ§ μ°ν
λ³΄ν΅ 
/admin κ²½λ‘λ localhostμ κ°μ λ΄λΆλ§μμλ§ μ κ·Όν  μ μλλ‘ νκ±°λ, IP νμ΄νΈλ¦¬μ€νΈ μ΄μ© λ±μ ν΅ν΄ μ κ·Όμ ν΅μ ν©λλ€.Β 
μμλ‘ ν΄λΉ μ¬μ΄νΈμμ 
/adminκ²½λ‘λ‘ μ κ·Όνλ €κ³  νλ©΄ block λΉνλ κ²μ λ³Ό μ μμ΅λλ€.
Β 
Β 
CL-TE μ·¨μ½μ μ΄ μλ κ²μ νμ
νκ³ , Smuggling 곡격μ ν΅ν΄ /admin κ²½λ‘μ μ κ·Όν©λλ€.
- local usersλ§ ν¨λμ΄ νμ©λμ΄ μλ€κ³ λμ΅λλ€.
- μ¬κΈ°μ μ»μ μ μλ μ 보λ νλ‘ νΈμλμμ μ μ΄νλ μΈκ° μ μ± μ μ°ν νλ€λ κ² μ λλ€.
Β 
Β 
local usersκ° λ΄λΆ λ§μ μν μ μ λ€μ μ§μΉν  νλ₯ μ΄ λκΈ° λλ¬Έμ, Hostν€λλ₯Ό μΆκ°ν΄μ νμΈν΄ 보겠μ΅λλ€.
- ν€λκ° μ€λ³΅λμλ€κ³ λΉλλ€.
- μλ§λ μ΄νμ μμ²λλ ν¨ν·κ³Ό ν©μ³μ§ λ, ν€λκ° μ€μ²©λμ΄ κ·Έλ° κ² κ°μ΅λλ€.
- μ΄νμ μ€λ λ°μ΄ν°λ₯Ό Bodyμ²λ¦¬λ₯Ό νμ¬ λ³κ²½ν΄ λ³΄κ² μ΅λλ€.
Β 
Β 
HTTP/1.1 νμ€μ GET μμ²μ Bodyλ₯Ό ν¬ν¨νλ κ²μ κΈμ§νμ§λ μμ§λ§, 
λλΆλΆμ μΉ μλ²μ ν΄λΌμ΄μΈνΈλ GET μμ²μ Bodyλ₯Ό 무μνλλ‘ κ΅¬νλμ΄ μμ΅λλ€. λλ¬Έμ, μ΄νμ μ€λ ν¨ν·μ Bodyκ°μ 보λ΄κ² λλ©΄ μΌλ°μ μΈ GET μμ²κ³Ό κ°λ€κ³  ν  μ μμ΅λλ€.
- μ¬κΈ°μ λ λ²μ§Έλ‘ λ±μ₯νλ Content-Lengthλ μμλ‘ λΆμ¬ν©λλ€.
- μ΄νμ μ€λ λ°μ΄ν°κ° Body λ°μ΄ν°λ‘ λ€μ΄κ°κ³ , Body λ°μ΄ν°λ‘ λ€μ΄κ° ν€λ μ λ³΄λ 무μλ¨μΌλ‘, μ μμ μΌλ‘ admin panelμ μ κ·Όν μ μκ² λ©λλ€.
Β 
Β 
Β 
Β 
Β 
4.2 λ―Έλ€μ¨μ΄βμλμλ² μ 보 μ μΆ / μ¬μ©μ μμ² Leak
λ―Έλ€μ¨μ΄ β μλ μλ² λ΄μ© μΊ‘μ³
μ¬κΈ°μ μΉμ¬μ΄νΈμ ννκ² μ¬μ©λλ κ²μ κΈ°λ₯μ΄ μ‘΄μ¬ν©λλ€.
μΉμ¬μ΄νΈλ κ²μν λ΄μ©μ Response νμ΄μ§μ κ²μ κ²°κ³Όμ ν¨κ» 보μ¬μ€λλ€.

Β 
Β 
μ΄λ¬ν κ²½μ° 
CL-TEμ·¨μ½μ μ μ΄μ©νκ² λλ©΄, λ―Έλ€μ¨μ΄κ° μλ μλ²μ μμ²νλ μ λ³΄λ₯Ό μΊ‘μ³ν  μ μμ΅λλ€.μ΄λ€μμΌλ‘ κ°λ₯ν κΉμ?
κ·Έλ¦Όκ³Ό κ°μ΄, 첫 λ²μ§Έ Smuggling ν¨ν·μμ Content-Lengthλ₯Ό μΆ©λΆνκ² κΈΈκ² μ£Όκ³  search νλΌλ―Έν° λ€μ valueλ₯Ό λΉμλ‘λλ€.
Β 
μ΄λ κ² λλ©΄ μλ μλ²μ μμΌμ Smugglingλ νμ΄λ‘λκ° λ¨κ² λ©λλ€.
Β 
μ΄λ λ λ²μ§Έ μμ²μ λ°μμν€λ©΄  
search=λλ²μ§Έ μμ² ννλ‘ λ―Έλ€μ¨μ΄κ° μλ μλ²λ‘ λ³΄λΈ μμ²μ΄ κ²μ κΈ°λ‘μ²λΌ Store λκΈ° λλ¬Έμ 곡κ°λμ§ μμ ν€λ μ λ³΄ μ μΆμ΄ κ°λ₯ν©λλ€. 
- λ³΄ν΅ λ―Έλ€μ¨μ΄μμ μΆκ°λ ν€λλ₯Ό μλμλ²μμ νμ±νκ³ λ ΈμΆνμ§ μκΈ° λλ¬Έμ μμλΌ λ°©λ²μ΄ μμ΅λλ€.
- νμ§λ§ HTTP Smugglingμ ν΅ν΄ μμ² ν¨ν· μ체λ₯Ό Leak ν¨μΌλ‘μ¨, λΉλ° ν€λλ₯Ό μμλΌ μ μμμ΅λλ€.
Β 
Β 
Β 
μ¬μ©μ μμ² Leak
λ§μ°¬κ°μ§λ‘ HTTP Smugglingμ μ¬μ©νλ©΄ μΌλ° μ μ μ 
μΏ ν€μ λ³΄, νΉμ  ν€λ, μΈμ¦ μ λ³΄λ±μ μμ μ€λͺ
ν λ°©μμ²λΌ ν΄νΉν  μ μμ΅λλ€.Β 
- μ¬μ©μμ μμ²μ΄ μΉμ¬μ΄νΈμ μ μ₯λλ μλΉμ€λ₯Ό μ°Ύμ΅λλ€.
- HTTP Smugglingμ ν΅ν΄ μΉμ¬μ΄νΈμ 무μΈκ°κ° μ μ₯λλ ν¨ν·μ Smuggling ν©λλ€.
- μ¬μ©μκ° μΉμ¬μ΄νΈμ μ κ·Όν©λλ€.
- Smugglingλ ν¨ν·κ³Ό μ¬μ©μμ μ κ·Ό ν¨ν·μ΄ ν©μ³μ§μΌλ‘μ¨, μ¬μ©μλ μμ μ μμ² μ 보λ₯Ό μΉμ¬μ΄νΈμ μ μ₯νκ² λ©λλ€.
- 곡격μλ μ μ₯λ μ 보λ₯Ό λ°νμΌλ‘ μ¬μ©μμΈ μ² μμ₯ ν©λλ€.
Β 
Β 
π μμ
β οΈ μμ μ
λλ€. ν¨ν· μ λ³΄κ° μ¬λ°λ₯΄μ§ μμ μ μμ΅λλ€.
Β 
곡격μλ Smuggling ν¨ν·μ 
Content-Lengthλ₯Ό μΆ©λΆν μ£Όκ³ , email= μ ν΅ν΄ μ¬μ©μμ μ λ³΄κ° μ΄λ©μΌ μΉμ
μ λ΄κΈ°κ² ν©λλ€.Β 
Β 
곡격μμ Smuggling μλ μ΄ν, μΉ μλ²μ μ κ·Όν νΌν΄μλ μμ μ μμ² μ λ³΄λ₯Ό 
/post/commentμ μ μ₯νκ² λ©λλ€.
Β 
Β 
μ΄λ° μμΌλ‘ Smugglingμ λ€μν μ·¨μ½μ μ λ΄ν¬νκ³  μμ΅λλ€. μλ²μ λ°μ΄ν° νμ± λ°©λ²μ λ°λΌ λΆμνκ³ , μ΄λ€ μ λ³΄λ₯Ό μ μΆν  μ μλμ§ νμΈνμ¬μΌ ν©λλ€.
Β 
Β 
Β 
Β 
Β 
Reference
Β 

